package Utils;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.*;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Optional;

public class SimpleTools {

    /**
     * 置空临时文件
     */
    public static void clearFile(){
        File file =new File("files\\Tmp.json");
        try {
            if(!file.exists()) {
                file.createNewFile();
            }
            FileWriter fileWriter =new FileWriter(file);
            fileWriter.write("");
            fileWriter.flush();
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 操作结果：JavaFX判断是否为空
     *
     * @param str 文本
     * @return boolean 如果为空返回true，否则返回false
     */
    public static boolean isEmpty(String str) {
        if (str == null || "".equals(str.trim())) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 操作：循环判断数组是否有空值（返回值与上一方法完全相反）
     *
     * @param properties
     * @return boolean 如果为空返回true，否则返回false
     */
    public static boolean isempty(String[] properties){
        for(String s : properties){
            if(s == null || "".equals(s.trim())) return true;
        }
        return false;
    }

    /**
     * 操作结果：自定义一个JavaFX的对话框
     *
     * @param alterType 对话框类型0
     * @param title     对话框标题
     * @param header    对话框头信息
     * @param message   对话框显示内容
     * @return boolean 如果点击了”确定“那么就返回true，否则返回false
     */
    public static boolean informationDialog(Alert.AlertType alterType, String title, String header, String message) {
        // 按钮部分可以使用预设的也可以像这样自己 new 一个
        Alert alert = new Alert(alterType, message, new ButtonType("取消", ButtonBar.ButtonData.CANCEL_CLOSE), new ButtonType("确定", ButtonBar.ButtonData.YES));
        // 设置对话框的标题
        alert.setTitle(title);
        alert.setHeaderText(header);
        // showAndWait() 将在对话框消失以前不会执行之后的代码
        Optional<ButtonType> buttonType = alert.showAndWait();
        // 根据点击结果返回
        if (buttonType.get().getButtonData().equals(ButtonBar.ButtonData.YES)) {
            return true;// 如果点击了“确定”就返回true
        } else {
            return false;
        }
    }

    /**
     * 操作结果：JavaFX判断登录界面用户名密码是否填写
     *
     * @param userNameTextField 用户名文本框
     * @param passwordTextField 密码文本框
     * @return boolean 如果登录成功返回true，否则返回false
     */
    public static boolean isLogIn(TextInputControl userNameTextField, TextInputControl passwordTextField) {
        if (SimpleTools.isEmpty(userNameTextField.getText())) {
            SimpleTools.informationDialog(Alert.AlertType.WARNING, "提示", "警告", "用户名不能为空！");
            return false;
        }
        if (SimpleTools.isEmpty(passwordTextField.getText())) {
            SimpleTools.informationDialog(Alert.AlertType.WARNING, "提示", "警告", "密码不能为空！");
            return false;
        }
        return true;
    }

}